package bean;

import java.io.IOException;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import util.Criptografia;
import vo.FuncionarioDAO;
import vo.FuncionarioVO;

@ManagedBean(name = "loginBean")
public class LoginBean {
	private FuncionarioVO usuarioVO = new FuncionarioVO();
	private FuncionarioVO usuarioLogado;
	private FuncionarioDAO usuarioDAO = new FuncionarioDAO();

	// public static int idFuncionarioLogado =
	// getUsuarioLogado().getPessoaVO().getFuncionarioVO().getIdpessoa();

	public void logar() {
		getUsuarioVO().setSenha(Criptografia.md5(getUsuarioVO().getSenha()));
		setUsuarioLogado(getUsuarioDAO().logar(getUsuarioVO()));
		if (getUsuarioLogado() != null) {
			FacesContext
					.getCurrentInstance()
					.getExternalContext()
					.getApplicationMap()
					.put("idLogado",
							getUsuarioLogado().getPessoaVO().getFuncionarioVO()
									.getIdpessoa());
			home();
		} else {
			FacesContext.getCurrentInstance().addMessage(
					null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR,
							"Login e/ou senha incorreto(s).", ""));
		}
	}

	public void validaLogin() {
		if (getUsuarioLogado() == null) {

			try {
				FacesContext.getCurrentInstance().getExternalContext().redirect("login.jsf");
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}
	}

	public void vendedorNao() {
		if (getUsuarioLogado() != null) {
			if (getUsuarioLogado().getCargo().equals("3")) {
					sair();
			}
		}
	}
	
	public void funcionadioNao(){
		if (getUsuarioLogado() != null) {
			if (getUsuarioLogado().getCargo().equals("2")) {
					sair();
			}
		}
	}

	public void home() {
		try {
			FacesContext.getCurrentInstance().getExternalContext()
					.redirect("index.jsf");
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}

	public void sair() {
		setUsuarioLogado(null);
		System.out.println("Sair()");
		// validaLogin();
	}

	public FuncionarioVO getUsuarioVO() {
		return usuarioVO;
	}

	public void setUsuarioVO(FuncionarioVO usuarioVO) {
		this.usuarioVO = usuarioVO;
	}

	public FuncionarioVO getUsuarioLogado() {
		return usuarioLogado;
	}

	public void setUsuarioLogado(FuncionarioVO usuarioLogado) {
		this.usuarioLogado = usuarioLogado;
	}

	public FuncionarioDAO getUsuarioDAO() {
		return usuarioDAO;
	}

	public void setUsuarioDAO(FuncionarioDAO usuarioDAO) {
		this.usuarioDAO = usuarioDAO;
	}

}
